﻿<p>An <em>IfcProjectLibrary</em> collects all library elements that are included within a referenced project data set.</p>

<p>Examples for project libraries include:</p>
<ul>
<li>type libraries (also called style or family libraries): a collection of subtypes of <em>IfcTypeObject</em></li>
<li>property definition libraries: a collections of <em>IfcPropertySetTemplate</em> or <em>IfcPropertyTemplates</em></li>
</ul>

<p>The inherited attributes <em>RepresentationContext</em> and <em>UnitsInContext</em> have the following meaning:</p>
<ul>
 <li>Context of the representations used within the project library. When the project library includes shape representations for its library type objects, one or several geometric representation contexts need to be included that define the coordinate system, the coordinate space dimensions, and/or the precision factor,</li>
 <li>Units locally assigned to measure types used within the context of this project library.</li>
</ul>

<blockquote class="note">NOTE&nbsp; It is generally discouraged to use a different length measure and plane angle measure in an included project library compared with the project itself. It may lead to unexpected results for the shape representation of items included in the project library.</blockquote>

<p>Instances of <em>IfcProjectLibrary</em> are assigned to the project context using the <em>IfcRelDeclares</em> relationship and accessible through the inverse attribute <em>HasContext</em>. Individual object types and property (set) templates are assigned to the <em>IfcProjectLibrary</em> using the <em>IfcRelDeclares</em> relationship and are accessible through the inverse attribute <em>Declares</em>. An <em>IfcProjectLibrary</em> may be decomposed into sub libraries using the relationship <em>IfcRelNests</em>. Sub libraries are accessed by the <em>IfcProjectLibrary</em> through the inverse attribute <em>IsNestedBy</em>.</p>

<blockquote class="history">
HISTORY&nbsp; New entity in IFC4.
</blockquote>

